#include "cpu/exec/template-start.h"

#define instr call

static void do_execute() {
	cpu.esp -= DATA_BYTE;//
    swaddr_write(cpu.esp, DATA_BYTE, cpu.eip + 1 + DATA_BYTE);
    cpu.eip += op_src->val;
    print_asm(str(instr) " %x", cpu.eip + 1 + DATA_BYTE);
}

make_instr_helper(si)
#if DATA_BYTE == 4
make_helper(call_rm_l) {
	int len = decode_rm_l(eip + 1);
    cpu.esp -= DATA_BYTE;
    swaddr_write(cpu.esp, DATA_BYTE, cpu.eip + len + 1);
    cpu.eip = op_src->val - (len + 1);
    print_asm(str(instr) " *%s", op_src->str);
    return len + 1;
}
#endif
#include "cpu/exec/template-end.h"